<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        function fn1() {
            var a = 0;

            function fn2() {
                ++a; //1
                console.log(a);
            }
            return fn2;
        }
        fn1()(); //1
        var newFn = fn1();
        newFn(); //1
        newFn(); //2
        // 这个题考查的是闭包问题， fn1是父函数， fn2是子函数， 然而fn2被return到外部， 接着看函数执行， fn1()()， fn1() 函数返回fn2， 所以fn1()()， 也就是fn2() 执行， 那么这一步执行fn2函数就好了，++a之后从0变成1， 这一步弹出1。

        // var newFn() = fn1()； 由于fn1() 等于fn2， 所以这里相当于var newFn = fn2;
        // 然后newFn() 执行， 这一步也打印1
        // 由于这里声明了一个变量作为存储， 所以第二个newFn() 执行， 拿到的a是第一个newFn() 的结果， 所以这一步打印2
    </script>
</body>

</html>